#include<iostream>
#include<string>
#include<algorithm>//sort函数包含的头文件
using namespace std;
//定义一个学生类型的结构体
typedef struct student
{
    string name;           //学生姓名
    int achievement;     //学生成绩
} student;
//这是函数是sort函数的第三个参数
//如果希望升序排序,就是"<",降序排列就是">"号
//如果希望用其他的参数作为排序条件，只需要把相应的条件改一下（如果改成name），这样结构体就以name作为排序标准
bool comparison(student a,student b){
    return a.achievement<b.achievement;
}
//用来显示学生信息的函数
void show(student stu[],int n)
{
    for(int i = 0; i < n; i++)
    {
        cout<<"姓名:"<<stu[i].name<<'\t'<<"成绩:"<<stu[i].achievement<<endl;
    }
}
int main()
{
    student stu[] = { {"张三",99},{"李四",87},{"王二",100} ,{"麻子",60}};
    cout<<"排序前："<<endl;
    show(stu,4);
    sort(stu,stu+4,comparison);
    cout<<"排序后："<<endl;
    show(stu,4);
    return 0;
}


//要注意使用typedef的区别  为了规范以后都用typedef




/*
#include <bits/stdc++.h>
using namespace std;
#define   N   16
struct student
{  char  num[10];
    int   s;
};
bool cmp(student a,student b)
{
    return a.s>b.s;

}

main()
{   
    struct student ss[N]={
        {"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},
        {"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},
        {"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},
        {"GA011",91},{"GA017",64},{"GA018",64},{"GA016",72}
    };
    sort(ss,ss+N,cmp);
    for (int i = 0; i < 15; ++i)
    {
        cout << ss[i].num << " " << ss[i].s << endl;
    }
}
*/


